This invention relates to decoding codewords in a high speed data transmission system, and more particularly to decoding codewords which have been encoded using a variable-length coding (VLC) scheme.
Variable-length coding is a coding technique often used for lossless data compression. In accordance with this technique, fixed-length data is converted into variable-length codewords according to the statistics of the data. In general, the lengths of the codewords are chosen so that shorter codewords are used to represent the more frequently occurring data and longer codewords are chosen to represent the less frequently occurring data. By properly assigning the variable-length codewords to the library of all possible source codewords, the averaged word length of the variable-length code is shorter than that of the original data and, therefore, data compression is achieved. Huffman code design is a procedure commonly used to construct a minimum redundant variable-length code for a known data statistic. Generally, the encoding process can be implemented by a table-lookup process using the input data to address the table. The codewords and word-lengths are stored as table contents and outputted sequentially, through a buffer, at a constant data rate onto the data channel. At the receiving end, however, the decoding process is more complicated. Due to the variable-length nature, each codeword has to be segmented from the received bit string before it can be decoded into a source symbol. Therefore, the design of a variable-length decoder is always more difficult than the design of a variable-length encoder.
There are several methods to decode a stream of variable-length codewords. The one most often used is called the tree-searching algorithm. A variable-length code can always be represented by a tree with codewords as leaves (also called terminal nodes). The decoding starts from the root of the code tree and is guided by the received bit string to follow one of two branches at each node. When a leaf is reached, the end of a codeword is detected and it is segmented from the remaining string. This type of decoder includes logic circuitry corresponding to the tree and control circuitry to traverse the code tree. This approach may be slow, especially for long codewords, since a bit-by-bit search through the code tree is required for each decoded symbol. In typical applications, an input symbol is represented by several bits. The speed of shifting received bits into a decoder is several times as high as the averaged speed of decoded data. Therefore, the tree-searching based decoder has to be operated at the speed of several times of the output data rate.
Such high-speed requirements are particularly critical for the digital transmission of high definition television (HDTV) signals. In such an HDTV system the total sample rate (combining luminance and chrominance signals) is likely 100 MHz. If variable-length coding is used, the maximum length code word could typically be 16 bits. A bit-by-bit decoder would thus need to shift at 16 times the sample rate, or at 1.6 Gbits/sec, to detect the code words at the sample rate. Such high speeds are very difficult to implement using current IC technology.
Due to the difficulty of implementing high-speed variable-length decoders, there are several special variable-length codes designed for fast and inexpensive decoders. For example, a variable-length encoder with a length-indicating prefix is proposed by J. Cocke et al in U.S. Pat. No. 3,717,851 issued Oct. 24, 1972. In "Variable Word Length Coding for a High Data Rate DPCM Video Coder," Proc. of Picture Coding Symposium, 1986, pp. 54-56, M. E. Lukacs proposed a hardware architecture that is capable of fast decoding of specially designed variable length codes. These approaches tradeoff coding efficiency with hardware speed.
A table-lookup based approach is an alternative to the bit-by-bit search operation. In a table-lookup based approach, such as disclosed in U.S. Pat. No. 3,675,212, issued on Jul. 4, 1972 to J. Raviv et al, the received bit string is compared with the contents of a codeword table. The codeword table has an entry associated with each possible variable-length codeword that includes the decoded fixed-length word and the length of the variable-length word. When the sequence of leading bits in an input register matches one of the entries in the codeword table, a codeword match is indicated. The input register is then shifted by the number of bits indicated by code length entry, thereby making the next sequence of bits available for comparison with entries in the codeword table. Disadvantageously, bit-by-bit shifting at the very high speed multiple of the sample rate is required to enable the decoder to maintain the sample rate of decoding.
An object of the present invention is to decode variable-length codewords at the sample rate, regardless of the codeword length, without a need for clocking at a rate equal to the sample rate times the maximum codeword length.
A feature of the present invention is that special variable-length codewords, which would otherwise decrease coding efficiency, are not required.